VST3 Editor with automatic parameter binding. More...
Public Member Functions | |
VST3Editor (Steinberg::Vst::EditController *controller, UTF8StringPtr templateName, UTF8StringPtr xmlFile) | |
VST3Editor (UIDescription *desc, Steinberg::Vst::EditController *controller, UTF8StringPtr templateName, UTF8StringPtr xmlFile=0) | |
bool | exchangeView (UTF8StringPtr templateName) |
void | enableTooltips (bool state) |
bool | setEditorSizeConstrains (const CPoint &newMinimumSize, const CPoint &newMaximumSize) |
void | getEditorSizeConstrains (CPoint &minimumSize, CPoint &maximumSize) |
bool | requestResize (const CPoint &newSize) |
Steinberg::tresult PLUGIN_API | queryInterface (const ::Steinberg::TUID iid, void **obj) |
virtual int32_t | getTagForName (UTF8StringPtr name, int32_t registeredTag) const |
virtual CControlListener * | getControlListener (UTF8StringPtr controlTagName) |
virtual int32_t | controlModifierClicked (VSTGUI::CControl *pControl, VSTGUI::CButtonState button) |
return 1 if you want the control to not handle it, otherwise 0 | |
Protected Types | |
typedef std::map< int32_t, ParameterChangeListener * > | ParameterChangeListenerMap |
Protected Member Functions | |
~VST3Editor () | |
void | init () |
ParameterChangeListener * | getParameterChangeListener (int32_t tag) |
void | recreateView () |
void | syncParameterTags () |
bool | enableEditing (bool state) |
bool PLUGIN_API | open (void *parent, const PlatformType &type) |
void PLUGIN_API | close () |
void | beginEdit (int32_t index) |
void | endEdit (int32_t index) |
CView * | createView (const UIAttributes &attributes, IUIDescription *description) |
CView * | verifyView (CView *view, const UIAttributes &attributes, IUIDescription *description) |
IController * | createSubController (UTF8StringPtr name, IUIDescription *description) |
CMessageResult | notify (CBaseObject *sender, IdStringPtr message) |
Steinberg::tresult PLUGIN_API | onSize (Steinberg::ViewRect *newSize) |
Steinberg::tresult PLUGIN_API | canResize () |
Steinberg::tresult PLUGIN_API | checkSizeConstraint (Steinberg::ViewRect *rect) |
Steinberg::tresult PLUGIN_API | findParameter (Steinberg::int32 xPos, Steinberg::int32 yPos, Steinberg::Vst::ParamID &resultTag) |
virtual void | valueChanged (CControl *pControl) |
virtual void | controlBeginEdit (CControl *pControl) |
virtual void | controlEndEdit (CControl *pControl) |
virtual void | controlTagWillChange (CControl *pControl) |
virtual void | controlTagDidChange (CControl *pControl) |
void | onViewAdded (CFrame *frame, CView *view) |
void | onViewRemoved (CFrame *frame, CView *view) |
void | onMouseEntered (CView *view, CFrame *frame) |
void | onMouseExited (CView *view, CFrame *frame) |
CMouseEventResult | onMouseMoved (CFrame *frame, const CPoint &where, const CButtonState &buttons) |
a mouse move event happend on the frame at position where. If the observer handles this, the event won't be propagated further | |
CMouseEventResult | onMouseDown (CFrame *frame, const CPoint &where, const CButtonState &buttons) |
a mouse down event happend on the frame at position where. If the observer handles this, the event won't be propagated further | |
int32_t | onKeyDown (const VstKeyCode &code, CFrame *frame) |
should return 1 if no further key down processing should apply, otherwise -1 | |
int32_t | onKeyUp (const VstKeyCode &code, CFrame *frame) |
should return 1 if no further key up processing should apply, otherwise -1 | |
Protected Attributes | |
UIDescription * | description |
VST3EditorDelegate * | delegate |
IController * | originalController |
ParameterChangeListenerMap | paramChangeListeners |
std::string | viewName |
std::string | xmlFile |
bool | tooltipsEnabled |
bool | doCreateView |
bool | editingEnabled |
CPoint | minSize |
CPoint | maxSize |
CRect | nonEditRect |
VST3 Editor with automatic parameter binding.
The VST3Editor class represents the view for a VST3 plug-in. It automatically binds the VST3 parameters to VSTGUI control tags and it includes an inline UI editor for rapid development.
Add the following code to your Steinberg::Vst::EditController class:
IPlugView* PLUGIN_API MyEditController::createView (FIDString name) { if (strcmp (name, ViewType::kEditor) == 0) { return new VST3Editor (this, "view", "myEditor.uidesc"); } return 0; }
To activate the inline editor you need to define the preprocessor definition "VSTGUI_LIVE_EDITING=1". Rebuild your plug-in, start your prefered host, instanciate your plug-in, open the context menu inside your editor and choose "Enable Editing". Now you can define tags, colors, fonts, bitmaps and add views to your editor.
See Inline UI Editing for VST3 (WYSIWYG)
typedef std::map<int32_t, ParameterChangeListener*> ParameterChangeListenerMap [protected] |
VST3Editor | ( | Steinberg::Vst::EditController * | controller, | |
UTF8StringPtr | templateName, | |||
UTF8StringPtr | xmlFile | |||
) |
VST3Editor | ( | UIDescription * | desc, | |
Steinberg::Vst::EditController * | controller, | |||
UTF8StringPtr | templateName, | |||
UTF8StringPtr | xmlFile = 0 | |||
) |
~VST3Editor | ( | ) | [protected] |
void beginEdit | ( | int32_t | index | ) | [protected] |
Steinberg::tresult PLUGIN_API canResize | ( | ) | [protected] |
Steinberg::tresult PLUGIN_API checkSizeConstraint | ( | Steinberg::ViewRect * | rect | ) | [protected] |
void PLUGIN_API close | ( | ) | [protected] |
void controlBeginEdit | ( | CControl * | pControl | ) | [protected, virtual] |
Reimplemented from CControlListener.
void controlEndEdit | ( | CControl * | pControl | ) | [protected, virtual] |
Reimplemented from CControlListener.
virtual int32_t controlModifierClicked | ( | VSTGUI::CControl * | pControl, | |
VSTGUI::CButtonState | button | |||
) | [inline, virtual, inherited] |
return 1 if you want the control to not handle it, otherwise 0
Reimplemented in DelegationController.
void controlTagDidChange | ( | CControl * | pControl | ) | [protected, virtual] |
Reimplemented from CControlListener.
void controlTagWillChange | ( | CControl * | pControl | ) | [protected, virtual] |
Reimplemented from CControlListener.
IController * createSubController | ( | UTF8StringPtr | name, | |
IUIDescription * | description | |||
) | [protected, virtual] |
Reimplemented from IController.
CView * createView | ( | const UIAttributes & | attributes, | |
IUIDescription * | description | |||
) | [protected, virtual] |
Reimplemented from IController.
bool enableEditing | ( | bool | state | ) | [protected] |
void enableTooltips | ( | bool | state | ) |
void endEdit | ( | int32_t | index | ) | [protected] |
bool exchangeView | ( | UTF8StringPtr | templateName | ) |
Steinberg::tresult PLUGIN_API findParameter | ( | Steinberg::int32 | xPos, | |
Steinberg::int32 | yPos, | |||
Steinberg::Vst::ParamID & | resultTag | |||
) | [protected] |
virtual CControlListener* getControlListener | ( | UTF8StringPtr | controlTagName | ) | [inline, virtual, inherited] |
Reimplemented in DelegationController.
ParameterChangeListener * getParameterChangeListener | ( | int32_t | tag | ) | [protected] |
virtual int32_t getTagForName | ( | UTF8StringPtr | name, | |
int32_t | registeredTag | |||
) | const [inline, virtual, inherited] |
Reimplemented in DelegationController.
void init | ( | ) | [protected] |
CMessageResult notify | ( | CBaseObject * | sender, | |
IdStringPtr | message | |||
) | [protected] |
int32_t onKeyDown | ( | const VstKeyCode & | code, | |
CFrame * | frame | |||
) | [protected, virtual] |
should return 1 if no further key down processing should apply, otherwise -1
Implements IKeyboardHook.
int32_t onKeyUp | ( | const VstKeyCode & | code, | |
CFrame * | frame | |||
) | [protected, virtual] |
should return 1 if no further key up processing should apply, otherwise -1
Implements IKeyboardHook.
CMouseEventResult onMouseDown | ( | CFrame * | frame, | |
const CPoint & | where, | |||
const CButtonState & | buttons | |||
) | [protected, virtual] |
a mouse down event happend on the frame at position where. If the observer handles this, the event won't be propagated further
Reimplemented from IMouseObserver.
Implements IMouseObserver.
Implements IMouseObserver.
CMouseEventResult onMouseMoved | ( | CFrame * | frame, | |
const CPoint & | where, | |||
const CButtonState & | buttons | |||
) | [inline, protected, virtual] |
a mouse move event happend on the frame at position where. If the observer handles this, the event won't be propagated further
Reimplemented from IMouseObserver.
Steinberg::tresult PLUGIN_API onSize | ( | Steinberg::ViewRect * | newSize | ) | [protected] |
Implements IViewAddedRemovedObserver.
Implements IViewAddedRemovedObserver.
bool PLUGIN_API open | ( | void * | parent, | |
const PlatformType & | type | |||
) | [protected] |
Steinberg::tresult PLUGIN_API queryInterface | ( | const ::Steinberg::TUID | iid, | |
void ** | obj | |||
) |
void recreateView | ( | ) | [protected] |
bool requestResize | ( | const CPoint & | newSize | ) |
void syncParameterTags | ( | ) | [protected] |
void valueChanged | ( | CControl * | pControl | ) | [protected, virtual] |
Implements CControlListener.
CView * verifyView | ( | CView * | view, | |
const UIAttributes & | attributes, | |||
IUIDescription * | description | |||
) | [protected, virtual] |
Reimplemented from IController.
VST3EditorDelegate* delegate [protected] |
UIDescription* description [protected] |
bool doCreateView [protected] |
bool editingEnabled [protected] |
CRect nonEditRect [protected] |
IController* originalController [protected] |
ParameterChangeListenerMap paramChangeListeners [protected] |
bool tooltipsEnabled [protected] |
std::string viewName [protected] |
std::string xmlFile [protected] |